A peer-vector computing machine, which is described in the following U.S. Patent Publications, includes a pipeline accelerator that can often perform mathematical computations ten to one hundred times faster than a conventional processor-based computing machine can perform these computations: 2004/0133763; 2004/0181621; 2004/0136241; 2004/0170070; and, 2004/0130927, which are incorporated herein by reference. The pipeline accelerator can often perform mathematical computations faster than a processor because unlike a processor, the accelerator processes data in a pipelined fashion while executing few, if any, software instructions.
Unfortunately, despite its oft-superior data-processing speed, a peer-vector computing machine may lack some of the popular features of a conventional processor-based computing machine.
For example, a peer-vector computing machine may lack the ability to configure itself to operate with the installed hardware that composes the pipeline accelerator; and may lack the ability to reconfigure itself in response to a change in this hardware.
Typically, a conventional processor-based computing machine can configure its software and settings during its start-up routine to operate with the hardware installed in the machine, and can also reconfigure its software and settings in response to a change in this hardware. For example, assume that while the processor-based machine is “off”, one increases the amount of the machine's random-access memory (RAM). During the next start-up routine, the machine detects the additional RAM, and reconfigures its operating system to recognize and exploit the additional RAM during subsequent operations. Similarly, assume that one adds a wireless-router card to the bus while the processor-based machine is off. During the next start-up routine, the machine detects the card and configures its operating system to recognize and allow a software application such as a web browser to use the card (the machine may need to download the card's driver via a CD-ROM or the internet). Consequently, to install new hardware in a typical processor-based machine, an operator merely inserts the hardware into the machine, which then configures or reconfigures the machine's software and settings without additional operator input.
But a peer-vector machine may lack the ability to configure or reconfigure itself to operate the hardware that composes the pipeline accelerator. For example, assume that one wants the peer-vector machine to instantiate a pre-designed circuit on multiple programmable-logic integrated circuits (PLICs) such as field-programmable gate arrays (FPGAs), each of which is disposed on a respective pipeline unit of the pipeline accelerator. Typically, one manually generates configuration-firmware files for each of the PLICs, and loads these files into the machine's configuration memory. During a start-up routine, the peer-vector machine causes each of the PLICs to download a respective one of these files. Once the PLICs have downloaded these firmware files, the circuit is instantiated on the PLICs. But if one modifies the circuit, or modifies the type or number of pipeline units in the pipeline accelerator, then he may need to manually generate new configuration-firmware files and load them into the configuration memory before the machine can instantiate the modified circuit on the pipeline accelerator.
Furthermore, the peer-vector computing machine may lack the ability to continue operating if a component of the machine fails.
Some conventional processor-based computing machines have redundant components that allow a machine to be fault tolerant, i.e., to continue operating when a component fails or otherwise exhibits a fault or causes a fault in the machine's operation. For example, a multi-processor-based computing machine may include a redundant processor that can “take over” for one of main processors if and when a main processor fails.
But unfortunately, a peer-vector machine may have a lower level of fault tolerance than a fault-tolerant processor-based machine.
Moreover, existing fault-tolerant techniques may add significant cost and complexity to a computing machine. Per the above example, assume that a processor-based computing machine includes a redundant processor. If the machine has only one main processor, then adding the redundant processor may double the area that the processors occupy, and may double the costs for procuring and maintaining the processors.
Therefore, a need has arisen for a peer-vector computing machine that can configure itself to operate with the hardware that composes the pipeline accelerator, and that can reconfigure itself to recognize and operate with newly modified accelerator installed hardware.
A need has also arisen for a peer-vector machine having a higher level of fault tolerance.
Furthermore, a need has arisen for a fault-tolerant technique that is less costly and complex than providing redundancy solely by the inclusion of dedicated redundant components.